
   using System;
   using System.Collections;
   using System.Collections.Generic;
   using System.ComponentModel;
   using System.Data;
   using HER;
  namespace FEL.BOD
  {
  /// <summary>
  /// Acceso a los Web Services WS_BOD
  /// Modulo: Bodega tar
  /// Tabla: Bod_Movimiento
  /// </summary>
  [DataObject]
  public class BO_Bod_Movimiento
  {
  #region  Adapter
  private WS_BOD _Adapter;
  /// <summary>
  /// Acceso al servicio
  /// </summary>
  public WS_BOD Adapter
  {
  get
  {
  if (_Adapter == null)
  _Adapter = new WS_BOD();
  return _Adapter;
  }
  }
  #endregion
  #region Obtención de datos
  
  [DataObjectMethodAttribute(DataObjectMethodType.Select, false)]
  public List<Bod_Movimiento> Get(string sortExpression, Scope s, string Bod_Bodega_Id, DateTime Fecha_Inicial, DateTime Fecha_Final)
  {
  List<Bod_Movimiento> lista = new List<Bod_Movimiento>(Adapter.Bod_Movimiento_Get(s, Bod_Bodega_Id, Fecha_Inicial, Fecha_Final));
  lista.Sort(new Bod_Movimiento_Comparar(sortExpression));
  return lista;
  }
  // Retorna un data table de objetos
  [DataObjectMethodAttribute(DataObjectMethodType.Select, false)]
  public DataTable Get(Scope s,string Bod_Bodega_Id, DateTime Fecha_Inicial, DateTime Fecha_Final)
  {
  return EntidadDT.GetDT(Adapter.Bod_Movimiento_Get(s,Bod_Bodega_Id, Fecha_Inicial, Fecha_Final));
  }
  #endregion
  #region Ordenar la lista
  class Bod_Movimiento_Comparar : IComparer<Bod_Movimiento>
  {
  private string _sortColumn;
  private bool _reverse;
  public Bod_Movimiento_Comparar(string sortExpression)
  {
  _reverse = sortExpression.ToLowerInvariant().EndsWith(" desc");
  if (_reverse)
  _sortColumn = sortExpression.Substring(0, sortExpression.Length - 5);
  else
  _sortColumn = sortExpression;
  }
  public int Compare( Bod_Movimiento x, Bod_Movimiento y)
  {
  int retVal = 0;
  switch (_sortColumn)
  {
  case "Id":
  retVal = string.Compare(x.Id, y.Id);
  break;
  case "Nombre":
  retVal = string.Compare(x.Nombre, y.Nombre);
  break;
  case "Codigo":
  retVal = string.Compare(x.Codigo, y.Codigo);
  break;
  case "Estado":
  retVal = string.Compare(x.Estado, y.Estado);
  break;
  }
  return (retVal * (_reverse ? -1 : 1));
  }
  }
  #endregion
    }
    }
